// src/router/index.ts
import { createRouter, createWebHistory } from 'vue-router';
import { useAppStore } from '../store/modules/app.js';
import { useUserStore } from '@/store/modules/user.js';
import routes from './modules/routes.js';


const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
});

const PC_BREAKPOINT = 768; // Tailwind 'md' 断点


router.beforeEach((to, from) => {
  const appStore = useAppStore();
  const userStore = useUserStore();

  const isLoggedIn = userStore.isLoggedIn;
  const mustLogin = to.meta.mustLogin;

  
  // 如果目标页面需要登录，但用户未登录
  if (mustLogin && !isLoggedIn) {
    // 重定向到登录页，并携带当前要访问的路径作为 redirect 参数
    // 登录成功后，可以根据这个 redirect 参数跳回原来的页面
    return {
      path: '/login',
      query: { redirect: to.fullPath },
    };
  }


  // PC端逻辑: 始终使用 none
  if (window.innerWidth >= PC_BREAKPOINT) {
    appStore.setTransitionName('none');
    return;
  }

  // 移动端逻辑
  const toIsTab = to.meta.isTab;
  const fromIsTab = from.meta.isTab;

  // 在两个 Tab 页面之间切换: 无动画
  if (toIsTab && fromIsTab) {
    appStore.setTransitionName('none');
    return;
  }

  // 其他情况 (进入/退出 Tab 页面): 使用 index 判断左右滑动
  const toIndex = to.meta.index as number;
  const fromIndex = from.meta.index as number;

  if (toIndex && fromIndex) {
    appStore.setTransitionName(toIndex > fromIndex ? 'slide-left' : 'slide-right');
  } else {
    // 默认情况或从无 index 的页面跳转
    appStore.setTransitionName('fade');
  }

});

export default router;
